perm filename DPYIII.FAI[GEO,BGB] blob
sn#001350 filedate 1972-10-28 generic text, type T, neo UTF8
00100 TITLE DISPLY -- DISPLAY PRIMITIVES
00200
00300 ;ALTERNATE PDP-10 MNEMONICS.
00400 OPDEF LAC[MOVE]↔OPDEF DAC[MOVEM]↔OPDEF GO[JRST]
00500 ;SAIL CONVENTIONS.
00600 DEFINE SUBR(NAME){INTERN NAME↔NAME:}
00700 DEFINE ARG1<-1(17)>
00800 DEFINE ARG2<-2(17)>
00900 DEFINE POP1J<GO POP1J.>
01000 DEFINE POP2J<GO POP2J.>
01100 ;DISPLAY UUO CODES.
01200 OPDEF DPYPOS [XWD 702100,0]
01300 OPDEF DPYSIZ [XWD 702140,0]
01400 OPDEF DPYCLR [XWD 701000,0]
01500 OPDEF UPG [XWD 703000,0]
01600 OPDEF GETLIN [TTYUUO 6,]
01700
01800
01900 A←1
02000 B←2
02100 C←3
02200
02300 SP←16
02400 P←17
02500 POP1J.: SUB P,[2,2]↔JRST @2(P)
02600 POP2J.: SUB P,[3,3]↔JRST @3(P)
02700
02800
02900 INTERNAL DPYSET,AIVECT,AVECT,APT,RIVECT,RVECT,RPT
03000 INTERNAL APOINT,RPOINT
03100 INTERNAL DPYOUT,HYDPOG
03200 INTERNAL DPYCLR,DPYBIG,DPYBRT,DPYRESET,DPYPARS
03300 INTERNAL CLRBFR,DTYO,DPYSST
03400
03500 RV←←6
03600 AV←←106
03700 VIS←←0
03800 EP←←20
03900 INV←←40
04000 SVS←100
04100 SV←2
04200
04300 DEFINE COMPAT(N)<POP P,RETURN↔JSP COMP-N>
04400
04500 POP P,5
04600 POP P,4
04700 POP P,3
04800 POP P,2
04900 POP P,1
05000 COMP: JRST @0
00100 ;EXTERNAL PROCEDURE AIVECT(INTEGER X,Y)
00200 ;EXTERNAL PROCEDURE AVECT(INTEGER X,Y)
00300 ;EXTERNAL PROCEDURE APT(INTEGER X,Y)
00400 AIVECT: MOVEI C,INV+AV
00500 GO LV
00600 AVECT: MOVEI C,VIS+AV
00700 GO LV
00800 APOINT:
00900 APT: MOVEI C,EP+AV
01000 LV: COMPAT(2)
01100 SKIPGE IGNORE↔GO @RETURN
01200 LVC: DPB A,[POINT 11,C,10]
01300 DPB B,[POINT 11,C,21]
01400 LV2: AOS A,DPYPTR
01500 DAC C,(A)
01600 LV3: HRLI A,<(<POINT 7,0,35>)>
01700 DAC A,DPYPTR
01800 HRRZI A,(A)
01900 CAML A,BUFEND
02000 SETOM IGNORE
02100 GO @RETURN
00100 ;EXTERNAL PROCEDURE RIVECT(INTEGER X,Y)
00200 ;EXTERNAL PROCEDURE RVECT(INTEGER X,Y)
00300 ;EXTERNAL PROCEDURE RPT(INTEGER X,Y)
00400 RIVECT: MOVEI C,INV+RV
00500 GO RVG
00600 RVECT: MOVEI C,VIS+RV
00700 GO RVG
00800 RPOINT:
00900 RPT: MOVEI C,EP+RV
01000 RVG: COMPAT(2)
01100 SKIPE RELFLG#
01200 GO LVC
01300 CAML A,[-SVS]
01400 CAIL A,SVS
01500 GO LVC
01600 CAML B,[-SVS]
01700 CAIL B,SVS
01800 GO LVC
01900 ANDCMI C,RV ;CAN CONSTRUCT SHORT VECTOR
02000 DPB A,[POINT 7,C,22]
02100 DPB B,[POINT 7,C,29]
02200 LSH C,20
02300 ORI C,SV+INV ;MAKE 2ND VECTORE INVISIBLE - ZERO LENGTH
02400 LAC A,@DPYPTR
02500 TLZ A,777774
02600 CAIE A,(C);WAS LAST DPY OUTPUT HALF A SHORT VECTOR.
02700 GO LV2 ;NO
02800 LSH C,-24 ;YES, PUT IT THERE
02900 DPB C,[POINT 16,@DPYPTR,31]
03000 HRRZ A,DPYPTR
03100 GO @RETURN
03200
03300 INTERNAL NORELOPT,RELOPT
03400 NORELOPT:SETOM RELFLG
03500 POPJ P,
03600
03700 RELOPT: SETZM RELFLG
03800 POPJ P,
00100 ;EXTERNAL PROCEDURE DTYO(INTEGER CHAR)
00200 ;EXTERNAL PROCEDURE DPYSST(STRING S);
00300
00400 DTYO: COMPAT(1)
00500 IDPB A,DPYPTR
00600 HRRZ A,DPYPTR
00700 CAML A,BUFEND
00800 SETOM IGNORE
00900 GO @RETURN
01000
01100 DPYSST: POP SP,1
01200 POP SP,2
01300 SKIPGE IGNORE↔POPJ P,
01400 HRRZS 2 ;LENGTH
01500 JUMPLE 2,SSRET
01600 ILDB 3,1
01700 IDPB 3,DPYPTR
01800 SOJG 2,.-2
01900 SSRET: HRRZ 1,DPYPTR
02000 CAML 1,BUFEND
02100 SETOM IGNORE
02200 POPJ P,
00100 ;EXTERNAL PROCEDURE DPYOUT(INTEGER PIECE_OF_GLASS)
00200 ;EXTERNAL PROCEDURE DPYCLR;
00300 ;EXTERNAL PROCEDURE DPYBIG(INTEGER SIZE);
00400 ;EXTERNAL PROCEDURE HYDPOG(INTEGER PIECE_OF_GLASS)
00500 ;EXTERNAL PROCEDURE CLRBFR;
00600 ;EXTERNAL PROCEDURE DPYSET(INTEGER ARRAY BUF);
00700 DPYBIG: COMPAT(1)
00800 MOVEI 3,INV+RV ;ZERO LENGTH RELATIVE-INVISIBLE VECTOR
00900 DPB 1,[POINT 3,3,27]
01000 GO LV2
01100 DPYBRT: COMPAT(1)
01200 MOVEI 3,INV+RV
01300 DPB 1,[POINT 3,3,24]
01400 GO LV2
01500 DPYCLR: SKIPL DPYFLG#
01600 DPYCLR
01700 MOVSI 777774
01800 DAC POGWD
01900 SETZM BUFHD
02000 POPJ P,
02100 DPYOUT: PUSHJ P,DPYPARS
02200 HRRZ B,DPYPTR
02300 SUB B,BUFHD
02400 ADDI B,1
02500 DAC B,BUFHD+1
02600 SH2: COMPAT(1)
02700 DPB A,[POINT 4,SH1,12]
02800 OR A,DPYFLG
02900 SKIPL A
03000 SH1: UPG BUFHD
03100 FALSE: MOVEI A,0
03200 GO @RETURN
03300
03400 CLRBFR: COMPAT(0)
03500 GO CLR2
03600
03700 DPYSET: SETZM DPYFLG
03800 COMPAT(1)
03900 ADDI 1,2
04000 DAC 1,BUFHD
04100 HRRZ 2,-3(1) ;SIZE
04200 ADDI 2,-3(1)
04300 SUBI 2,1
04400 SETZM IGNORE
04500 DAC 2,BUFEND
04600 CLR2: LAC A,BUFHD
04700 MOVEI B,1
04800 DAC B,1(A)
04900 MOVEI B,2(A)
05000 HRLI B,1(A)
05100 BLT B,@BUFEND ;SET DPY BUFFER TO NULL CHARACTER WORDS
05200 GO LV3
00300 HYDPOG: SETZM BUFHD+1
00400 GO SH2
00500
00600 DPYPARS: SKIPN 1,BUFHD
00700 POPJ P,
00800 LAC 2,DPYPTR
00900 DAC 2,-2(1)
01000 MOVEI 2,2(2)
01100 SUB 2,1
01200 DAC 2,-1(1)
01300 POPJ P,
01400
01500 DPYRESET: COMPAT(1)
01600 ADDI 1,2
01700 DAC 1,BUFHD
01800 HRRZ 2,-3(1)
01900 ADDI 2,-3(1)
02000 DAC 2,BUFEND
02100 HRRZ 1,-2(1)
02200 GO CLR2+1
02300
02400 INTERNAL DPYTYP,TYPLOC
02500 DPYTYP: SETZM DPYFLG
02600 COMPAT(3)
02700 SKIPGE DPYFLG
02800 GO @RETURN
02900 DPYPOS(1) ;POSITION
03000 DPB 2,[POINT 9,3,26]
03100 DPYSIZ (3)
03200 GO @RETURN
03300
03400 TYPLOC: SETZM DPYFLG
03500 COMPAT(2)
03600 SKIPGE DPYFLG
03700 GO @RETURN
03800 DPYPOS (1)
03900 SUB 1,2
04000 IDIVI 1,=23
04100 CAIG 1,2
04200 MOVEI 1,3
04300 DPYSIZ 1000-2(1)
04400 GO @RETURN
00100 ;SAIL DECLARATIONS
00200 ;EXTERNAL PROCEDURE PGSEL(INTEGER POG)
00300
00400 INTERNAL PGSEL,GETPOG,RELPOG
00500 PGSEL: COMPAT(1)
00600 JUMPL 1,@RETURN
00700 SKIPL DPYFLG
00800 PGSEL 1
00900 GO @RETURN
01000
01100
01200 POGWD: XWD 777774,0
01300
01400 GETPOG: LAC POGWD
01500 JFFO .+2
01600 MOVNI 1,1
01700 ROT (1)
01800 TLZ 400000
01900 MOVN 2,1
02000 ROT(2)
02100 DAC POGWD
02200 POPJ P,
02300
02400 RELPOG: LAC 1,-1(P)
02500 LAC POGWD
02600 ROT (1)
02700 TLO 400000
02800 MOVN 2,1
02900 ROT(2)
03000 DAC POGWD
03100 GO HYDPOG
03200 IGNORE: 0
03300
03400 RETURN: 0
03500
03600
03700 INTERNAL DPYPTR;
03800 DPYPTR: 0
03900 BUFEND: 0
04000 BUFHD: 0
04100 0
04200
04300 END
04400 DPYIII.FAI - EOF.